package community;

import java.net.*;

import javax.servlet.http.*;

import model.*;

import org.apache.struts.action.*;
import org.apache.struts.actions.*;

import util.*;

public class CommunityFind extends DispatchAction{
	
	//ccno 즉 커뮤니티 카테고리에 따른 검색이 발생하면 실행되는 메소드
	public ActionForward communityFind(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		CommunityForm coForm = (CommunityForm)form;
		CommunityDAO coDAO = new CommunityDAO();
		MemberCommunityDAO mcDAO = new MemberCommunityDAO();
		
		HttpSession session = request.getSession();
		User user = (User)session.getAttribute("user");
		
		//로그인 상태를 확인하여
		//로그인 상태면 사용자가 가입한 커뮤니티를 저장시킨다.
		//로그인 상태가 아니면 로그인 하라는 메시지를 저장시킨다.
		if(session.getAttribute("user")!=null){
			if(user.isLogon()){
				coForm.setMemberCommunitys(mcDAO.getMemberCommunity(user.getMid()));
			}else{
				coForm.setMemberCommunitys(mcDAO.getMemberCommunity());
			}
		}
		
		// 어떤 카테고리인 가를 가지고 있는 ccno를 가져 온다.
		int ccno = Integer.parseInt(request.getParameter("ccno"));
		
		// ccno로 검색하였을때 몇 총 개의 데이타가 있는지 알아 온다.
		long totalRows = coDAO.getTotalRows(ccno);
		Pager pager = new Pager();
		pager.init(request, totalRows, 3, 5);
		
		// 카테고리별로 몇개의 커뮤니티가 존재하는지를 가져오는 메소드
		coForm.setSortCommunity(coDAO.getSortCommunityList());
		
		// 검색 결과를 ActionForm에 저장하는 메소드
		coForm.setSortResult(coDAO.getCommunityList(ccno,pager.getCurrentPage(), pager.getRowsPerPage()));
		
		return mapping.findForward("ok");
	}
	
	//coname 즉 커뮤니티명 검색이 발생하면 실행되는 메소드
	public ActionForward conameFind(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		CommunityForm coForm = (CommunityForm)form;
		CommunityDAO coDAO = new CommunityDAO();
		MemberCommunityDAO mcDAO = new MemberCommunityDAO();
		
		HttpSession session = request.getSession();
		User user = (User)session.getAttribute("user");
		
		//로그인 상태를 확인하여
		//로그인 상태면 사용자가 가입한 커뮤니티를 저장시킨다.
		//로그인 상태가 아니면 로그인 하라는 메시지를 저장시킨다.
		if(session.getAttribute("user")!=null){
			if(user.isLogon()){
				coForm.setMemberCommunitys(mcDAO.getMemberCommunity(user.getMid()));
			}else{
				coForm.setMemberCommunitys(mcDAO.getMemberCommunity());
			}
		}
		
		//어떤 커뮤니티명으로 검색하는 지 값을 얻어온다.
		String coname = request.getParameter("coname");
	
		//utf-8로 디코딩하여 다시 저장한다.
		coname = URLDecoder.decode(request.getParameter("coname"),"utf-8");
		
	
		//coname로 검색하였을때 몇 총 개의 데이타가 있는지 알아 온다.
		long totalRows = coDAO.getTotalRows(coname);
		Pager pager = new Pager();
		pager.init(request, totalRows, 2, 5);
		
		// 카테고리별로 몇개의 커뮤니티가 존재하는지를 가져오는 메소드
		coForm.setSortCommunity(coDAO.getSortCommunityList());
		
		// 검색 결과를 ActionForm에 저장하는 메소드
		coForm.setSortResult(coDAO.getCommunityList("%"+coname+"%",pager.getCurrentPage(), pager.getRowsPerPage()));
		
		//findname 필드값에 저장하여 이것이 coname에 의한 검색이라는 것을 알려준다.
		coForm.setFindname(coname);
		
		return mapping.findForward("ok");
		
	}

}

